package cn.kgc.Thread.work.work01;

public class DrawMoney implements Runnable{
  /*
  1、张三和张三的老婆各拥有一张银行卡和存折，可以对同一个银行账号进行存取款的操作，现银行账户中余额为500元，
  每人各取款5次，每次规定取款100元，在取款过程中存在网络延时，请使用多线程模拟张三和张三的老婆同时取款的过程。
   */
    private int money=500;
    private int num=0;
    @Override
    public void run() {
        for (int i = 0; i <5 ; i++) {
                 synchronized (this){
                     if (num>=5){
                         break;
                     }
                     if (money>0){
                         System.out.println(Thread.currentThread().getName() + "准备取款100元，账户余额为："+money);
                         System.out.println(Thread.currentThread().getName() + "完成取款100元，账户余额为："+(money-100));
                         System.out.println();
                     }else if (money<=0){
                                num++;
                         System.out.println("抱歉，交易失败，账户余额不足以支付"+Thread.currentThread().getName()+"的取款，当前余额为0");
                     }
                     money-=100;
                     try {
                         Thread.sleep(500);
                     } catch (InterruptedException e) {
                         e.printStackTrace();
                     }
                 }
        }
    }

    public static void main(String[] args) {
        DrawMoney drawMoney=new DrawMoney();
        Thread a1=new Thread(drawMoney,"张三");
        Thread a2=new Thread(drawMoney,"张三的老婆");
        a1.start();
        a2.start();
    }
}
